﻿namespace StockSharp.AlfaDirect
{
	using Ecng.Common;

	using StockSharp.BusinessEntities;

	/// <summary>
	/// Условие лимитной стоп-заявки.
	/// </summary>
	public class AlfaLimitOrderCondition : OrderCondition
	{
		private const string _keyStopPrice = "StopPrice";
		private const string _keySlippage = "Slippage";

		/// <summary>
		/// Стоп-цена.
		/// </summary>
		public double StopPrice
		{
			get { return Parameters[_keyStopPrice].To<double>(); }
			set { Parameters[_keyStopPrice] = value; }
		}

		/// <summary>
		/// Проскальзывание.
		/// </summary>
		public double Slippage
		{
			get { return Parameters[_keySlippage].To<double>(); }
			set { Parameters[_keySlippage] = value; }
		}
	}

	/// <summary>
	/// Условие лимитной стоп-заявки + цель.
	/// </summary>
	public class AlfaTargetLimitOrderCondition : AlfaLimitOrderCondition
	{
		private const string _keyTargetPrice = "TargetPrice";

		/// <summary>
		/// Цена фиксирования прибыли.
		/// </summary>
		public double TargetPrice
		{
			get { return Parameters[_keyTargetPrice].To<double>(); }
			set { Parameters[_keyTargetPrice] = value; }
		}
	}

	/// <summary>
	/// Условие заявки "скользящий стоп".
	/// </summary>
	public class AlfaTrailingOrderCondition : AlfaLimitOrderCondition
	{
		private const string _keyLevel = "Level";

		/// <summary>
		/// Максимальное отклонение в противоположную сторону.
		/// </summary>
		public double Level
		{
			get { return Parameters[_keyLevel].To<double>(); }
			set { Parameters[_keyLevel] = value; }
		}
	}
}